// 清空父页面选中行
aeroui.grid.selectTr = null;
/* 验证table中的信息 */
function validateTableMsg(){
	var radio_Objs=$("input:checked").each(function (j) {
		var _id = $( this ).attr('map');
		$( '#defaultValue' ).val( $( '#'+_id ).text() );
	});

	// 查看是否有列表值，如果没有就不能提交
	// 如果信息栈为空，就表示没有信息不能提交
	if( _getChilds( document.getElementById('mytbody') ).length<=1 ){
		aerouiAlert( "至少要有一条列表值" );
		return {
			submit : false,
			args : []
		};
	}
	// 取出验证信息数组，进行验证，在此数组中的每一个元素的都是如下形式eleId:value,所以只要取到了eleId如果没有':'之后的value那就放到错误数组
	validate_error.removeAll();
	_rptItem_select_validate.doEach( function(){
		// 取出每个元素 , 此处的this就是指当前元素
		var eleId = this.split(':')[0];
		var _val = this.split(':')[1];
		// 所有对象都去一下tooltips方法
		if( typeof( document.getElementById( eleId ).release ) == 'function' ){
			document.getElementById( eleId ).release();
			document.getElementById( eleId ).style.backgroundColor = '#F7F7F7';
		}
		// 如果此value为‘’那就把此id添加到错误数组中
		if( _val=='' ){
			validate_error.push( eleId );
		}
		// 如果是输入数字，那就要求输入数字
		if( eleId.indexOf('data')!=-1 ){
			if( !/^[-\+]?\d+(\.\d+)?$/.test( _val ) ){
				validate_error.push( eleId );
			}
		}
	} );
	// 如果validate_error数组length为0那就返回true
	if( validate_error.length==0 ){
		return {
			submit : true,
			args : []
		};
	// 如果验证没有通过
	}else{
		validate_error.doEach( function(){
			$( '#'+this ).css({
				backgroundColor : 'red'
			});
			if( this.indexOf('name')!=-1 ){
				new aeroui.tooltips( document.getElementById( this ) , "不能为空" );
			}else{
				new aeroui.tooltips( document.getElementById( this ) , "不能为空且只能是数字" );
			}
			$( '#'+this ).css({
				borderColor : '',
				borderWidth : ''
			});
		} );
		return {
			submit : false,
			args : []
		};
		// $( '#errorMsg' ).text( validate_error.join(',') );
	}
}
// 添加一行
var name_tr_count = 1;
var data_tr_count = 1;
var desc_tr_count = 1;
function addtr(){
	var tbody = document.getElementById('mytbody');
	var tr = document.createElement("tr");
	tr.onclick = function(){
		selectTr( tr );
	}
	var nameCount = name_tr_count++;
	var dataCount = data_tr_count++;
	var descCount = desc_tr_count++;
	for(var i=0;i<3 ; i++){
		var td = document.createElement('td');
		td.className = 'edit';
		if( i==0 ){
			td.id = 'name'+nameCount;
			// 把新创建出来的节点添加最后结果集合中 
			_rptItem_select_validate.push( td.id+':' );
		}
		if( i==1 ){
			td.id = 'data'+dataCount;
			// 把新创建出来的节点添加最后结果集合中 
			_rptItem_select_validate.push( td.id+':' );
		}
		if( i==2 ){
			td.id = 'desc'+descCount;
		}
		tr.appendChild(td);
	}
	// clone到此一行
	//var opt = document.getElementById('example_td').cloneNode(true);
	// 取出其中的子节点修改属性
	//var child = _getChilds( opt );
	//for( var i=0;i<child.length;i++ ){
	//	$( child[i] ).attr( 'map' , 'data'+dataCount );
	//}
	//tr.appendChild(opt);
	tbody.appendChild(tr);
	editTd();
}
// 错误信息数组 
var validate_error = new Array();
// 整页的信息数组
var _rptItem_select_msg = new Array();
// 生成一个用于验证的信息数组
// 只把要进行验证的信息放入到此数组中，在此处要验证的信息有name与data属性，
// 在每一次提交之前新添加一个回调方法来对此进行验证，如果没有验证通过就不再进行提交
var _rptItem_select_validate = new Array();
// 此数姐初始化的时候就添加上必要的元素 , 也就是在初始化表格时的三个对象
_rptItem_select_validate.push( 'name0:' );
_rptItem_select_validate.push( 'data0:' );

function editTd(){
	// 调用可编辑
	tableCellEdit( function( beforeVal , newVal ){
		// 查看是否修改过此单元格，如果修改过之后
		// alert( $( this ).attr('id') + ":" + beforeVal );
		// 判断数组中是否已存在了此元素，如果存在了就删除
		if( _rptItem_select_msg.indexOf( $( this ).attr('id') + ":" + beforeVal ) !=-1 ){
			// 删除此数组中的元素
			_rptItem_select_msg.remove( $( this ).attr('id') + ":" + beforeVal ) ;
		}
		// 把验证数组中的信息进行一次验证，是否已在数组中存在，如果已存在就用最后值修改以前的值
		if( _rptItem_select_validate.indexOf( $( this ).attr('id') + ":" + beforeVal )!=-1 ){
			// 删除此数组中的元素
			_rptItem_select_validate.remove( $( this ).attr('id') + ":" + beforeVal );
		}
		// 添加到提交信息数组中
		_rptItem_select_msg.push( $( this ).attr('id') + ":" + newVal );
		// 添加到验证信息数组中
		// 如果此信息为name或data的信息，那就添加到验证信息数组中，
		// 查看正在处理的对象的id，如果此id中有name字串或data字串，那就添加到验证数组中
		if( $( this ).attr( 'id' ).indexOf('name')!=-1 || $( this ).attr( 'id' ).indexOf('data')!=-1 ){
			_rptItem_select_validate.push( $( this ).attr('id') + ":" + newVal );
		}
		// 去除验证数组中的空元素
		_rptItem_select_validate = _rptItem_select_validate.clearNull();
		// 更新列表信息
		fillRptItemSeleMsg();
		// $( '#fillRptItemSelectValidataMsg' ).text( _rptItem_select_validate.clearNull().join(',') );
		return true;
	} );
}
// 向用于后台的方法操作文本区的text
function fillRptItemSeleMsg(){
	// alert( _rptItem_select_msg );
	$( '#fillRptItemSelectMsg' ).text( _rptItem_select_msg.clearNull().join(',') );
}
// 调用编辑方法
editTd();
// 修改默认的值
function optClick( node ){
	// 此DOM对象上添加一个map
	var _id = $( node ).attr('map');
	// 添加到默认值
	$( '#defaultValue' ).val( $( '#'+_id ).text() );
}
// 删除tr
function deletetr(){
	if( null != aeroui.grid.selectTr ){
		// alert( _rptItem_select_msg );
		// 如果要删除此行，就要先删除此行的td在验证栈与信息栈与错误栈中的信息
		// 在此验证时，只是取出td的id，如果栈中有元素包含此‘id：’就把此元素删除
		// 取出此行在第一个td与第二个td与第三个td，第一个与第二个是要验证的项，第三个不用验证，只要在信息栈中删除就可以了
		var childs = _getChilds( aeroui.grid.selectTr );
		// 删除在验证栈中的数据
		_rptItem_select_validate.removeStartWith( $( childs[0] ).attr('id')+':' );
		_rptItem_select_validate.removeStartWith( $( childs[1] ).attr('id')+':' );
		// 删除在信息栈中的数据
		_rptItem_select_msg.removeStartWith( $( childs[0] ).attr('id')+':' );
		_rptItem_select_msg.removeStartWith( $( childs[1] ).attr('id')+':' );
		_rptItem_select_msg.removeStartWith( $( childs[2] ).attr('id')+':' );
		// 删除在错误栈中的数据
		validate_error.removeStartWith( $( childs[0] ).attr('id') );
		validate_error.removeStartWith( $( childs[1] ).attr('id') );
		// 整理栈
		_rptItem_select_validate = _rptItem_select_validate.clearNull();
		_rptItem_select_msg = _rptItem_select_msg.clearNull();
		validate_error = validate_error.clearNull();
		// 整理向后台发送的信息
		fillRptItemSeleMsg();
		$( aeroui.grid.selectTr ).remove();
	}
}